package com.example.blog.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;

import com.example.blog.entity.Comment;

public interface CommentMapper {
    /**
     * 通过评论ID查询
     */
    Comment selectByPrimaryKey(Integer commentId);
    
    /**
     * 查询所有评论
     */
    List<Comment> selectAll();
    
    /**
     * 通过博客ID查询评论
     */
    List<Comment> selectByBlogId(Integer blogId);
    
    /**
     * 通过用户ID查询评论
     */
    List<Comment> selectByUserId(Integer userId);
    
    /**
     * 查询用户在特定博客下的评论
     */
    List<Comment> selectByBlogIdAndUserId(@Param("blogId") Integer blogId, @Param("userId") Integer userId);
    
    /**
     * 查询博客下的有效评论（未被禁用且未被用户删除）
     */
    List<Comment> selectValidCommentsByBlogId(Integer blogId);
    
    /**
     * 插入评论记录
     */
    int insert(Comment comment);
    
    /**
     * 更新评论记录
     */
    int updateByPrimaryKey(Comment comment);
    
    /**
     * 更新评论状态（启用/禁用）
     */
    int updateDisableStatus(@Param("commentId") Integer commentId, @Param("isDisabled") Boolean isDisabled);
    
    /**
     * 标记评论为用户删除
     */
    int markAsDeletedByUser(Integer commentId);
    
    /**
     * 删除评论记录
     */
    int deleteByPrimaryKey(Integer commentId);
    
    /**
     * 删除博客下的所有评论
     */
    int deleteByBlogId(Integer blogId);
    
    /**
     * 删除用户的所有评论
     */
    int deleteByUserId(Integer userId);
} 